package com.ruoyi.equ.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.equ.domain.EquAsset;
import com.ruoyi.equ.domain.vo.EquScrapVos;
import com.ruoyi.equ.mapper.EquAssetMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.equ.mapper.EquScrapMapper;
import com.ruoyi.equ.domain.EquScrap;
import com.ruoyi.equ.service.IEquScrapService;

/**
 * 报废记录Service业务层处理
 *
 * @author ruoyi
 * @date 2025-11-05
 */
@Service
public class EquScrapServiceImpl implements IEquScrapService
{
    @Autowired
    private EquScrapMapper equScrapMapper;
    @Autowired
    private EquAssetMapper equAssetMapper;
    /**
     * 查询报废记录
     *
     * @param scrapId 报废记录主键
     * @return 报废记录
     */
    @Override
    public EquScrap selectEquScrapByScrapId(Long scrapId)
    {
        return equScrapMapper.selectEquScrapByScrapId(scrapId);
    }

    /**
     * 查询报废记录列表
     *
     * @param equScrap 报废记录
     * @return 报废记录
     */
    @Override
    public List<EquScrap> selectEquScrapList(EquScrap equScrap)
    {
        return equScrapMapper.selectEquScrapList(equScrap);
    }

    /**
     * 新增报废记录
     *
     * @param equScrap 报废记录
     * @return 结果
     */
    @Override
    public int insertEquScrap(EquScrap equScrap)
    {
        equScrap.setCreateTime(DateUtils.getNowDate());
        return equScrapMapper.insertEquScrap(equScrap);
    }

    /**
     * 修改报废记录
     *
     * @param equScrap 报废记录
     * @return 结果
     */
    @Override
    public int updateEquScrap(EquScrap equScrap)
    {
        equScrap.setUpdateTime(DateUtils.getNowDate());
        return equScrapMapper.updateEquScrap(equScrap);
    }

    /**
     * 批量删除报废记录
     *
     * @param scrapIds 需要删除的报废记录主键
     * @return 结果
     */
    @Override
    public int deleteEquScrapByScrapIds(Long[] scrapIds)
    {
        return equScrapMapper.deleteEquScrapByScrapIds(scrapIds);
    }

    /**
     * 删除报废记录信息
     *
     * @param scrapId 报废记录主键
     * @return 结果
     */
    @Override
    public int deleteEquScrapByScrapId(Long scrapId)
    {
        return equScrapMapper.deleteEquScrapByScrapId(scrapId);
    }

    @Override
    public Boolean finishScrapAndAsset(EquScrap equScrap) {
        //新增一条**报废记录**状态改为已完成，标注 “报废日期、处置方式”，不可删除（至少保留 5 年备查）
        //处置完成后，系统将设备状态改为 “已报废”
        try {

            // 拿到信息之后，新增数据到报废表中
            // 状态改为已完成
            equScrap.setRemark("已完成");
            int i1 =equScrapMapper.insertEquScrap(equScrap);
            if (i1 <= 0){
                return false;
            }
            // 新增报废数据之后，修改资产表中设备的状态为报废
            // 拿到资产id
            Long assetId = equScrap.getAssetId();
            // 获取到资产信息
            EquAsset equAsset = equAssetMapper.selectEquAssetByAssetId(assetId);
            equAsset.setAssetStatus("已报废");
            // 修改资产表中的设备状态
            int i2 =equAssetMapper.updateEquAsset(equAsset);
            if (i2 <= 0){
                return false;
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    /**
     * 查询报废记录列表
     */
    @Override
    public List<EquScrapVos> selectEquScrapVoList(EquScrapVos equScrapVos) {
        return equScrapMapper.selectEquScrapVoList(equScrapVos);
    }
    /**
     * 查询报废记录列表
     */
    @Override
    public List<EquScrap> getScrapsByAssetId(Long assetId) {
        return equScrapMapper.getScrapsByAssetId(assetId);
    }
}
